// 防抖 => 固定时间内 将多次操作变成一次
const telInput = document.querySelector('input')
telInput.addEventListener('input', antiSnake(demo, 2000))

// 防抖封装
function antiSnake(fn, wait) {
  let timeout = null;
  return args => {
    if (timeout) clearTimeout(timeout)
    timeout = setTimeout(fn, wait);
  }
}

function demo() {
  console.log('发起请求')
}

// ------------

// 节流 => 一定时间内的多个事情 合成一个
// 应用场景 => 1. 提交订单， 2. 高频监听事件
const box = document.querySelector('.box')
// touchmove - 浏览器 - 调整位: 手机模式
box.addEventListener('touchmove', throttle(demo, 2000))

// 1.
function throttle(e, time) {
  let timer = null;
  return function() {
    if (!timer) {
      timer = setTimeout(() => {
        e();
        timer = null;
      }, time);
    }
  }
}

// 2. 通过时间戳

// -------------------


// 这个写的很好
// https://zhuanlan.zhihu.com/p/81690420